Para começar nossa análise vamos identificar as variáveis para entender o que elas podem significar no contexto da composição de um vinho.
str(wine_dset)
## 'data.frame': 6497 obs. of 14 variables:
## $ id_vinho : int 1 2 3 4 5 6 7 8 9 10 ...
## $ fixedacidity : num 6.6 6.7 10.6 5.4 6.7 6.8 6.6 7.2 5.1 6.2 ...
## $ volatileacidity : num 0.24 0.34 0.31 0.18 0.3 0.5 0.61 0.66 0.26 0.22 ...
## $ citricacid : num 0.35 0.43 0.49 0.24 0.44 0.11 0 0.33 0.33 0.2 ...
## $ residualsugar : num 7.7 1.6 2.2 4.8 18.8 ...
## $ chlorides : num 0.031 0.041 0.063 0.041 0.057 0.075 0.069 0.068 0.027 0.035 ...
## $ freesulfurdioxide : num 36 29 18 30 65 16 4 34 46 58 ...
## $ totalsulfurdioxide: num 135 114 40 113 224 49 8 102 113 184 ...
## $ density : num 0.994 0.99 0.998 0.994 1 ...
## $ pH : num 3.19 3.23 3.14 3.42 3.11 3.36 3.33 3.27 3.35 3.11 ...
## $ sulphates : num 0.37 0.44 0.51 0.4 0.53 0.79 0.37 0.78 0.43 0.53 ...
## $ alcohol : num 10.5 12.6 9.8 9.4 9.1 9.5 10.4 12.8 11.4 9 ...
## $ quality : int 5 6 6 6 5 5 4 6 7 6 ...
## $ Vinho : Factor w/ 2 levels "RED","WHITE": 2 2 1 2 2 1 1 1 2 2 ...
“fixedacidity” -> Acidez Fixa : acidez é uma das características básica que tem uma contribuição relevante para o sabor, frescura, equilíbrio e capacidade de conservação dos vinhos. Acidez Fixa é a diferença entre acidez total do vinho e sua acidez volátil.
“volatileacidity” -> Acidez Volátil : é um componente do vinho que tipicamente cresce conforme o vinho envelhece e, em quando atinge um nível elevado, é responsável pelo aroma de vinagre. É o resultado da falta de cuidados durante a vinificação.
“citricacid” -> Ácido Cítrico : nos vinhos o ácido cítrico tem pouca ou nenhuma presença. Nos vinhos tintos desaparece devido à ação de bactérias láticas (fermentação malolática). Sensorialmente é fresco, porém em alguns casos pode apresentar um leve final amargo.
“residualsugar” -> Açucar Residual : no processo de fermentação do vinho a levedura vai transformando o açúcar da uva em álcool. Por isso que, em teoria, quanto mais açúcar houver na uva, mais álcool haverá no vinho. Porem nem todo o açucar é transformado em alcool, e o açucar que resta no final do processo de fermentação é conhecido como açucar residual.
“chlorides” -> Cloretos : os vinhos possuem em sua composição diversos produtos enológicos, sais e ácidos. Estes sais influenciam diretamente em sua qualidade.
“freesulfurdioxide” -> Dióxido de Enxofre Livre : as atividade antioxidásica do Dioxido de Enxofre bloqueia a ação de enzimas oxidantes, principalmente no início do processo de elaboração, evitando reações de oxidação e o conseqüente escurecimento do vinho.
“totalsulfurdioxide” -> Dióxido de Enxofre Total : dióxido de enxofre é usado como conservante nos vinhos.
“density” -> Densidade : define a leveza do vinhos, e pode ser caracterizado pelo tipo da uva ou por técnicas usadas na vinificação que podem ser determinantes na concentração da bebida.
“pH” -> PH : vinhos são naturalmente ácidos, com a maioria indo de 2,8 a 4,0. Os níveis de pH estão intrinsecamente ligados ao estilo e qualidade dos vinhos. O pH relativamente baixo, na faixa de 3,1 a 3,4, parece ser pré-requisito para a produção de vinhos de alta qualidade com solidez.
“sulphates” -> Sulfatos : os sulfitos também tem um papel de conservantes nos vinhos e ajudam na extração dos compostos fenólicos do vinho, responsáveis pela concentração de cor e taninos.
“alcohol” -> Alchool : o teor ácido é aquele responsável por conferir a textura e sensação de frescor. O teor ácido do vinho está diretamente ligado ao tipo de uva com o qual foi produzido, e o ideal é encontrar o equilíbrio perfeito entre o açúcar e a acidez ideal na hora da colheita.
“quality” -> Qualidade : uma infidade de aspectos influenciam na qualidade dos vinhos, desde aspectos como o nivel de oxidação, até a contaminação da rolha. No dataset a qualidade máxima é uma escala inteira entre 0 (menor qualidade) e 10 (maior qualidade).
“Vinho” -> Vinho : há inúmeros tipos de vinho (ex: tintos, brancos, roses, doces e espumantes), porém nossos dados contém apenas dois tipos: brancos e tintos.
wine_dset %>%
group_by(Vinho) %>%
count()
## # A tibble: 2 x 2
## # Groups: Vinho [2]
## Vinho n
## <fct> <int>
## 1 RED 1599
## 2 WHITE 4898
A quantidade de dados para os vinhos brancos é aproximadamente 3 vezes maior que o vinho tinto.
wine_white_dset <-
wine_dset %>%
filter(Vinho == 'WHITE')
wine_red_dset <-
wine_dset %>%
filter(Vinho == 'RED')
sum(is.na(wine_white_dset))
## [1] 0
sum(is.na(wine_red_dset))
## [1] 0
Como as somas dos valores _NA_s, tanto para o vinho tinto quanto para o branco, podemos afirmar que não há dados faltantes.
O vinho branco e vermelho apresentam características diferentes que definem se ele é bom ou ruim. Vamos dar uma olhada nos dados pra cada característica:
Vinho Branco
summary(wine_white_dset)
## id_vinho fixedacidity volatileacidity citricacid
## Min. : 1 Min. : 3.800 Min. :0.0800 Min. :0.0000
## 1st Qu.:1650 1st Qu.: 6.300 1st Qu.:0.2100 1st Qu.:0.2700
## Median :3310 Median : 6.800 Median :0.2600 Median :0.3200
## Mean :3284 Mean : 6.855 Mean :0.2782 Mean :0.3342
## 3rd Qu.:4932 3rd Qu.: 7.300 3rd Qu.:0.3200 3rd Qu.:0.3900
## Max. :6497 Max. :14.200 Max. :1.1000 Max. :1.6600
## residualsugar chlorides freesulfurdioxide totalsulfurdioxide
## Min. : 0.600 Min. :0.00900 Min. : 2.00 Min. : 9.0
## 1st Qu.: 1.700 1st Qu.:0.03600 1st Qu.: 23.00 1st Qu.:108.0
## Median : 5.200 Median :0.04300 Median : 34.00 Median :134.0
## Mean : 6.387 Mean :0.04577 Mean : 35.31 Mean :138.4
## 3rd Qu.: 9.900 3rd Qu.:0.05000 3rd Qu.: 46.00 3rd Qu.:167.0
## Max. :45.800 Max. :0.34600 Max. :289.00 Max. :440.0
## density pH sulphates alcohol
## Min. :0.9871 Min. :2.720 Min. :0.2200 Min. : 8.00
## 1st Qu.:0.9917 1st Qu.:3.090 1st Qu.:0.4100 1st Qu.: 9.50
## Median :0.9937 Median :3.180 Median :0.4700 Median :10.40
## Mean :0.9940 Mean :3.188 Mean :0.4898 Mean :10.51
## 3rd Qu.:0.9961 3rd Qu.:3.280 3rd Qu.:0.5500 3rd Qu.:11.40
## Max. :1.0140 Max. :3.820 Max. :1.0800 Max. :14.20
## quality Vinho
## Min. :3.000 RED : 0
## 1st Qu.:5.000 WHITE:4898
## Median :6.000
## Mean :5.878
## 3rd Qu.:6.000
## Max. :9.000
Vinho Vermelho
summary(wine_red_dset)
## id_vinho fixedacidity volatileacidity citricacid
## Min. : 3 Min. : 4.60 Min. :0.1200 Min. :0.000
## 1st Qu.:1523 1st Qu.: 7.10 1st Qu.:0.3900 1st Qu.:0.090
## Median :3103 Median : 7.90 Median :0.5200 Median :0.260
## Mean :3141 Mean : 8.32 Mean :0.5278 Mean :0.271
## 3rd Qu.:4690 3rd Qu.: 9.20 3rd Qu.:0.6400 3rd Qu.:0.420
## Max. :6490 Max. :15.90 Max. :1.5800 Max. :1.000
## residualsugar chlorides freesulfurdioxide totalsulfurdioxide
## Min. : 0.900 Min. :0.01200 Min. : 1.00 Min. : 6.00
## 1st Qu.: 1.900 1st Qu.:0.07000 1st Qu.: 7.00 1st Qu.: 22.00
## Median : 2.200 Median :0.07900 Median :14.00 Median : 38.00
## Mean : 2.539 Mean :0.08747 Mean :15.87 Mean : 46.47
## 3rd Qu.: 2.600 3rd Qu.:0.09000 3rd Qu.:21.00 3rd Qu.: 62.00
## Max. :15.500 Max. :0.61100 Max. :72.00 Max. :289.00
## density pH sulphates alcohol
## Min. :0.9901 Min. :2.740 Min. :0.3300 Min. : 0.9567
## 1st Qu.:0.9956 1st Qu.:3.210 1st Qu.:0.5500 1st Qu.: 9.5000
## Median :0.9968 Median :3.310 Median :0.6200 Median :10.2000
## Mean :0.9967 Mean :3.311 Mean :0.6581 Mean :10.4001
## 3rd Qu.:0.9978 3rd Qu.:3.400 3rd Qu.:0.7300 3rd Qu.:11.1000
## Max. :1.0037 Max. :4.010 Max. :2.0000 Max. :14.9000
## quality Vinho
## Min. :3.000 RED :1599
## 1st Qu.:5.000 WHITE: 0
## Median :6.000
## Mean :5.636
## 3rd Qu.:6.000
## Max. :8.000
A diferença alta em algumas característica sinaliza as particularidades que diferem o tipo de vinho (tinto ou branco). Será que por causa desta diferença faz sentido tratar esses dois vinhos como um só produto? Não seria interessante separá-los para uma maior precisão nas análise dos dados?
# Vinho Tinto
median_red_dset <- sapply(select(wine_red_dset, -c(Vinho, id_vinho, quality)), median)
median_red_dset <- as.data.frame(median_red_dset)
median_red_dset <- rownames_to_column(median_red_dset) %>%
rename(Mediana = median_red_dset, Caracteristica = rowname)
# Vinho Branco
median_white_dset <- sapply(select(wine_white_dset, -c(Vinho, id_vinho, quality)),median)
median_white_dset <- as.data.frame(median_white_dset)
median_white_dset <- rownames_to_column(median_white_dset) %>%
rename(Mediana = median_white_dset, Caracteristica = rowname)
# Diferenca
mediana_diferenca <- data.frame(
Caracteristica = median_white_dset$Caracteristica,
Diferenca.Mediana = abs(median_white_dset$Mediana - median_red_dset$Mediana)
)
arrange(mediana_diferenca, desc(mediana_diferenca$Diferenca.Mediana))
## Caracteristica Diferenca.Mediana
## 1 totalsulfurdioxide 96.00000
## 2 freesulfurdioxide 20.00000
## 3 residualsugar 3.00000
## 4 fixedacidity 1.10000
## 5 volatileacidity 0.26000
## 6 alcohol 0.20000
## 7 sulphates 0.15000
## 8 pH 0.13000
## 9 citricacid 0.06000
## 10 chlorides 0.03600
## 11 density 0.00301
Nota: a ordem descendente dessas diferenças será utilizada nos plots para uma melhor visualização.
Vamos utilizar a análise gráfica pelo histograma para ajudar a responder essas questões acima:
plot_ly(wine_dset, y = ~totalsulfurdioxide,type = "box",
color = ~Vinho, colors = c("red", "khaki")) %>%
layout(title = "Dióxido de Enxofre Total")
plot_ly(wine_dset, y = ~freesulfurdioxide,type = "box",
color = ~Vinho, colors = c("red", "khaki")) %>%
layout(title = "Dióxido de Enxofre Livre")
plot_ly(wine_dset, y = ~residualsugar,type = "box",
color = ~Vinho, colors = c("red", "khaki")) %>%
layout(title = "Açúcar Residual")
plot_ly(wine_dset, y = ~fixedacidity,type = "box",
color = ~Vinho, colors = c("red", "khaki")) %>%
layout(title = "Acidez Fixa")
Após a análise gráfica ficou ainda mais clara a diferença entre cada tipo de vinho (tinto ou branco), portanto, vamos pegar selecionar somente um tipo de vinho para uma análise coerente. Além disso, como o número de dados pros vinhos brancos é bem maior do que o para os vermelhos (aprox. 3 vezes maior), seria interessante utilizar os dados que oferecem mais amostras pra treinar e validar nosso modelo.
Com os histogramas foi possível identificar também a existência de outliers nos dados pois há pontos que estão acima do limite da upper fence ou abaixo da lower fence. Esses limites (lower e upper) são calculados utilizando a seguinte relação:
Upper fence:
upper_fence = 3º Quartil + 1,5 * Amplitude inter-quartil
Lower fence:
lower_fence = 1º Quartil - 1,5 * Amplitude inter-quartil
Para evitar que esses outliers influenciem em nossos modelos, vamos extraí-los:
wine_white_dset <- wine_white_dset %>%
select(-c(Vinho, id_vinho))
for (col in colnames(wine_white_dset)) {
upper_fence <- quantile(wine_white_dset[,col], 0.75, names = FALSE) +(1.5 * IQR(wine_white_dset[,col]))
lower_fence <- quantile(wine_white_dset[,col],0.25, names = FALSE) - (1.5 * IQR(wine_white_dset[,col]))
idx <- which(wine_white_dset[,col] < lower_fence | wine_white_dset[,col] > upper_fence)
for (x in idx) {
wine_white_dset[x,col] <- NA
}
}
Indentificando os componentes principais do dataset
vinhos_brancos <- wine_dset %>% filter(Vinho == 'WHITE')
vinhos_brancos <- vinhos_brancos[2:13]
fix(vinhos_brancos)
Padr_Vinhos <- scale(vinhos_brancos)
acpcor <- prcomp(Padr_Vinhos, scale = TRUE)
summary(acpcor)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6
## Standard deviation 1.8343 1.2594 1.1710 1.04158 0.98858 0.96612
## Proportion of Variance 0.2804 0.1322 0.1143 0.09041 0.08144 0.07778
## Cumulative Proportion 0.2804 0.4126 0.5268 0.61723 0.69867 0.77645
## PC7 PC8 PC9 PC10 PC11 PC12
## Standard deviation 0.87411 0.84938 0.74631 0.58393 0.53319 0.12185
## Proportion of Variance 0.06367 0.06012 0.04642 0.02841 0.02369 0.00124
## Cumulative Proportion 0.84012 0.90024 0.94666 0.97507 0.99876 1.00000
plot(1:ncol(Padr_Vinhos), acpcor$sdev^2, type = "b", xlab = "Componente",
ylab = "Variância", pch = 20, cex.axis = 0.8, cex.lab = 0.8)
Como podemos observar os componentes PC1, PC2, PC3 e PC4 se mostram os mais relevantes para a escolha do modelo.
Vinhos2 <- vinhos_brancos %>%
mutate(pc1 = acpcor$x[, 1]) %>%
mutate(pc2 = acpcor$x[, 2]) %>%
mutate(pc3 = acpcor$x[, 3]) %>%
mutate(pc4 = acpcor$x[, 4])
matcor <- cor(Vinhos2)
#install.packages("corrplot")
library(corrplot)
corrplot::corrplot(matcor, method="circle", order="hclust")
Com base no gráfico gerado de componentes principais;
Podemos observar que cada componente gerado pelo componentes principais tem uma certa especialidade:
Mediante nossa análise dos componentes principais desse dataset, vamos utilizar os modelos PC1 e PC3, por possuirem melhor correlação com a variável qualidade:
Variáveis dependentes: ModeloPC1 <- (quality) ModeloPC3 <- (quality)
Variáveis independentes: ModeloPC1 <- (alchool,residualsugar,totalsulfurdioxide,density) ModeloPC3 <- (citricacid,volatileacidity,fixedacidity)
Analisando os coefficientes
attach(vinhos_brancos)
modelopc1 <- summary(lm(quality ~ alcohol+residualsugar+totalsulfurdioxide+density))
modelopc1
##
## Call:
## lm(formula = quality ~ alcohol + residualsugar + totalsulfurdioxide +
## density)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.4675 -0.5386 -0.0124 0.4711 3.2149
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.007e+02 1.379e+01 7.303 3.27e-13 ***
## alcohol 2.366e-01 1.959e-02 12.077 < 2e-16 ***
## residualsugar 5.542e-02 5.295e-03 10.467 < 2e-16 ***
## totalsulfurdioxide 4.428e-04 3.160e-04 1.401 0.161
## density -9.835e+01 1.374e+01 -7.156 9.57e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7872 on 4893 degrees of freedom
## Multiple R-squared: 0.2106, Adjusted R-squared: 0.2099
## F-statistic: 326.2 on 4 and 4893 DF, p-value: < 2.2e-16
modelopc3 <- summary(lm(quality ~ citricacid+volatileacidity+fixedacidity))
modelopc3
##
## Call:
## lm(formula = quality ~ citricacid + volatileacidity + fixedacidity)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.3170 -0.7450 0.0200 0.3588 3.3870
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.21420 0.10777 66.940 < 2e-16 ***
## citricacid -0.03717 0.10761 -0.345 0.73
## volatileacidity -1.74089 0.12372 -14.072 < 2e-16 ***
## fixedacidity -0.12247 0.01526 -8.024 1.27e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8626 on 4894 degrees of freedom
## Multiple R-squared: 0.05189, Adjusted R-squared: 0.05131
## F-statistic: 89.28 on 3 and 4894 DF, p-value: < 2.2e-16
Podemos observar no ModeloPC1;
quality <- 100.7 + 0.2366(alcohol) + 0.05542(residualsugar) + 0.0004428(totalsulfurdioxide) + 98.35(density)
R² <- 21,06%
Verificamos então que esse modelopc1 como tentativa de escolher um modelo que explique a variável quality, percebemos estatisticamente que os estimadores para o caso de beta 3 (totalsulfurdioxide) é muito próximo de 0. Assumindo um nível de significância a 5% de probabilidade podemos vê que o P valor de beta 3 (totalsulfurdioxide), é superior ao nível de significância.
Por esses motivos apresentados não a porque colocar totalsulfurdioxide no modelo.
Podemos observar no ModeloPC3;
Verificamos então que esse modelopc3 como tentativa de escolher um modelo que explique a variável quality, percebemos estatisticamente que os estimadores para o caso de beta 1 (citricacid) é muito próximo de 0. Pelo mesmo motivo apresentado do modelopc1. Não a porque colocar citricacid no modelo.
quality <- 7.21420 - 0.28680(citricacid) - 1.76242(volatileacidity) - 0.12247(fixedacidity)
R² <- 51,89%
Reavaliando Modelos, depois da análise.
modelopc1 <- summary(lm(quality ~ alcohol+residualsugar+density))
modelopc1
##
## Call:
## lm(formula = quality ~ alcohol + residualsugar + density)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.5114 -0.5347 -0.0116 0.4747 3.1974
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 96.01833 13.37790 7.177 8.17e-13 ***
## alcohol 0.23748 0.01958 12.129 < 2e-16 ***
## residualsugar 0.05469 0.00527 10.379 < 2e-16 ***
## density -93.54585 13.31126 -7.028 2.39e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7873 on 4894 degrees of freedom
## Multiple R-squared: 0.2102, Adjusted R-squared: 0.2098
## F-statistic: 434.3 on 3 and 4894 DF, p-value: < 2.2e-16
modelopc3 <- summary(lm(quality ~ volatileacidity+fixedacidity))
modelopc3
##
## Call:
## lm(formula = quality ~ volatileacidity + fixedacidity)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.3168 -0.7453 0.0217 0.3581 3.3862
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.21046 0.10721 67.253 <2e-16 ***
## volatileacidity -1.73451 0.12232 -14.180 <2e-16 ***
## fixedacidity -0.12399 0.01461 -8.487 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8625 on 4895 degrees of freedom
## Multiple R-squared: 0.05187, Adjusted R-squared: 0.05148
## F-statistic: 133.9 on 2 and 4895 DF, p-value: < 2.2e-16
Podemos perceber agora que R² do modelopc1 é 21,02% e R² do modelopc3 é 51,87%. Por esse motivo escolhemos o modelopc3. Mesmo R² do modelopc3 não sendo muito adequado, foi o melhor que conseguimos, realizando diversos testes.
res <- rstandard(lm(quality ~ volatileacidity+fixedacidity))
modelo_fim <- lm(quality ~ volatileacidity+fixedacidity)
plot(predict(modelo_fim), res, xlab = "Preditor linear",ylab = "Residuos")
abline(h = 0, lty = 2)
qqnorm(residuals(modelo_fim), ylab="Residuos",xlab="Quantis teóricos",main="")
qqline(residuals(modelo_fim))
shapiro.test(res)
##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.97168, p-value < 2.2e-16
Verificando os residuos do modelo escolhido, nos mostra que pelo teste de normalidade utilizando a estatística do teste e obtendo o resultado de 0.97168 e o p valor de 2.2e-16. O valor de P do teste é pequeno por isso rejeita-se a hipótese de normalidade dos residuos e por consequência, conclui-se que os erros não são normalmente distribuídos
Variáveis dependentes: ModeloPC1 <- (quality) ModeloPC3 <- (quality)
Variáveis independentes: ModeloPC1 <- (alcohol+residualsugar+density) ModeloPC3 <- (volatileacidity+fixedacidity)
Modelo PC1
modelopc1 <- rpart (quality ~ alcohol+residualsugar+density, data=vinhos_brancos,
cp = 0.001,minsplit = 2,maxdepth=5)
summary(modelopc1)
## Call:
## rpart(formula = quality ~ alcohol + residualsugar + density,
## data = vinhos_brancos, cp = 0.001, minsplit = 2, maxdepth = 5)
## n= 4898
##
## CP nsplit rel error xerror xstd
## 1 0.161006505 0 1.0000000 1.0008456 0.02128089
## 2 0.021589481 1 0.8389935 0.8431813 0.02007644
## 3 0.014754876 2 0.8174040 0.8219686 0.01948617
## 4 0.011216103 3 0.8026491 0.8129478 0.01951163
## 5 0.007120579 4 0.7914330 0.7995252 0.01908485
## 6 0.005892037 6 0.7771919 0.7939806 0.01896565
## 7 0.004895494 7 0.7712998 0.7863001 0.01873182
## 8 0.003724600 8 0.7664043 0.7833336 0.01866677
## 9 0.003136388 9 0.7626797 0.7814822 0.01860231
## 10 0.002148696 10 0.7595434 0.7854388 0.01883455
## 11 0.002099654 11 0.7573947 0.7868013 0.01904526
## 12 0.001951928 12 0.7552950 0.7875922 0.01901252
## 13 0.001789442 13 0.7533431 0.7887995 0.01912672
## 14 0.001777643 14 0.7515536 0.7881735 0.01917731
## 15 0.001716374 16 0.7479984 0.7888398 0.01919225
## 16 0.001505435 18 0.7445656 0.7893382 0.01920766
## 17 0.001459041 19 0.7430602 0.7878033 0.01911643
## 18 0.001267890 20 0.7416011 0.7893006 0.01912840
## 19 0.001035207 21 0.7403332 0.7902035 0.01919065
## 20 0.001006451 22 0.7392980 0.7902262 0.01920398
## 21 0.001000000 23 0.7382916 0.7902580 0.01920409
##
## Variable importance
## alcohol density residualsugar
## 53 34 13
##
## Node number 1: 4898 observations, complexity param=0.1610065
## mean=5.877909, MSE=0.7841955
## left son=2 (3085 obs) right son=3 (1813 obs)
## Primary splits:
## alcohol < 10.85 to the left, improve=0.16100650, (0 missing)
## density < 0.992025 to the right, improve=0.11010040, (0 missing)
## residualsugar < 6.15 to the right, improve=0.01487859, (0 missing)
## Surrogate splits:
## density < 0.992005 to the right, agree=0.865, adj=0.637, (0 split)
## residualsugar < 5.05 to the right, agree=0.667, adj=0.099, (0 split)
##
## Node number 2: 3085 observations, complexity param=0.01475488
## mean=5.605511, MSE=0.5980247
## left son=4 (2200 obs) right son=5 (885 obs)
## Primary splits:
## alcohol < 10.11667 to the left, improve=0.030718810, (0 missing)
## residualsugar < 12.125 to the left, improve=0.009647650, (0 missing)
## density < 0.99355 to the right, improve=0.005601855, (0 missing)
## Surrogate splits:
## density < 0.992605 to the right, agree=0.764, adj=0.179, (0 split)
## residualsugar < 0.65 to the right, agree=0.714, adj=0.002, (0 split)
##
## Node number 3: 1813 observations, complexity param=0.02158948
## mean=6.341423, MSE=0.7598782
## left son=6 (881 obs) right son=7 (932 obs)
## Primary splits:
## alcohol < 11.74167 to the left, improve=0.06019267, (0 missing)
## residualsugar < 1.275 to the left, improve=0.02534408, (0 missing)
## density < 0.98989 to the right, improve=0.02213755, (0 missing)
## Surrogate splits:
## density < 0.990855 to the right, agree=0.712, adj=0.407, (0 split)
## residualsugar < 1.675 to the left, agree=0.572, adj=0.119, (0 split)
##
## Node number 4: 2200 observations, complexity param=0.0112161
## mean=5.519545, MSE=0.5468907
## left son=8 (1552 obs) right son=9 (648 obs)
## Primary splits:
## residualsugar < 12.35 to the left, improve=0.035806500, (0 missing)
## density < 0.99781 to the left, improve=0.023681410, (0 missing)
## alcohol < 8.45 to the left, improve=0.005220576, (0 missing)
## Surrogate splits:
## density < 0.99781 to the left, agree=0.909, adj=0.691, (0 split)
## alcohol < 9.15 to the right, agree=0.736, adj=0.105, (0 split)
##
## Node number 5: 885 observations, complexity param=0.001777643
## mean=5.819209, MSE=0.6610999
## left son=10 (148 obs) right son=11 (737 obs)
## Primary splits:
## residualsugar < 1.35 to the left, improve=0.010292280, (0 missing)
## density < 0.995885 to the right, improve=0.008992291, (0 missing)
## alcohol < 10.175 to the right, improve=0.008267479, (0 missing)
## Surrogate splits:
## density < 0.991385 to the left, agree=0.847, adj=0.088, (0 split)
##
## Node number 6: 881 observations, complexity param=0.005892037
## mean=6.121453, MSE=0.7605046
## left son=12 (5 obs) right son=13 (876 obs)
## Primary splits:
## residualsugar < 0.85 to the left, improve=0.033777760, (0 missing)
## density < 0.9978 to the right, improve=0.009508746, (0 missing)
## alcohol < 11.31667 to the right, improve=0.003180262, (0 missing)
##
## Node number 7: 932 observations, complexity param=0.0037246
## mean=6.549356, MSE=0.6703107
## left son=14 (699 obs) right son=15 (233 obs)
## Primary splits:
## alcohol < 12.775 to the left, improve=0.022899750, (0 missing)
## residualsugar < 1.525 to the left, improve=0.022844040, (0 missing)
## density < 0.98996 to the right, improve=0.007021868, (0 missing)
## Surrogate splits:
## density < 0.989135 to the right, agree=0.802, adj=0.206, (0 split)
##
## Node number 8: 1552 observations, complexity param=0.004895494
## mean=5.429124, MSE=0.4730693
## left son=16 (898 obs) right son=17 (654 obs)
## Primary splits:
## alcohol < 9.575 to the left, improve=0.025610800, (0 missing)
## density < 0.99741 to the right, improve=0.005695639, (0 missing)
## residualsugar < 1.05 to the left, improve=0.004256581, (0 missing)
## Surrogate splits:
## density < 0.99501 to the right, agree=0.653, adj=0.176, (0 split)
## residualsugar < 2.65 to the right, agree=0.617, adj=0.092, (0 split)
##
## Node number 9: 648 observations, complexity param=0.007120579
## mean=5.736111, MSE=0.6572145
## left son=18 (315 obs) right son=19 (333 obs)
## Primary splits:
## residualsugar < 14.775 to the right, improve=0.06105100, (0 missing)
## alcohol < 9.15 to the right, improve=0.04793473, (0 missing)
## density < 0.998635 to the right, improve=0.01752086, (0 missing)
## Surrogate splits:
## density < 0.99887 to the right, agree=0.738, adj=0.460, (0 split)
## alcohol < 8.85 to the left, agree=0.565, adj=0.105, (0 split)
##
## Node number 10: 148 observations, complexity param=0.001035207
## mean=5.635135, MSE=0.7047115
## left son=20 (12 obs) right son=21 (136 obs)
## Primary splits:
## density < 0.9935 to the right, improve=0.03812389, (0 missing)
## residualsugar < 0.75 to the left, improve=0.03088199, (0 missing)
## alcohol < 10.625 to the left, improve=0.01791730, (0 missing)
##
## Node number 11: 737 observations, complexity param=0.001777643
## mean=5.856174, MSE=0.6441715
## left son=22 (116 obs) right son=23 (621 obs)
## Primary splits:
## density < 0.995885 to the right, improve=0.01608006, (0 missing)
## residualsugar < 14.475 to the right, improve=0.01300643, (0 missing)
## alcohol < 10.175 to the right, improve=0.01108344, (0 missing)
## Surrogate splits:
## residualsugar < 13.75 to the right, agree=0.896, adj=0.336, (0 split)
##
## Node number 12: 5 observations
## mean=4, MSE=0.4
##
## Node number 13: 876 observations, complexity param=0.001951928
## mean=6.133562, MSE=0.7367275
## left son=26 (159 obs) right son=27 (717 obs)
## Primary splits:
## residualsugar < 1.275 to the left, improve=0.011617060, (0 missing)
## density < 0.9978 to the right, improve=0.010036870, (0 missing)
## alcohol < 11.31667 to the right, improve=0.003928452, (0 missing)
## Surrogate splits:
## density < 0.990455 to the left, agree=0.84, adj=0.119, (0 split)
##
## Node number 14: 699 observations, complexity param=0.003136388
## mean=6.477825, MSE=0.6758316
## left son=28 (67 obs) right son=29 (632 obs)
## Primary splits:
## residualsugar < 1.225 to the left, improve=0.025501000, (0 missing)
## density < 0.989385 to the left, improve=0.011072430, (0 missing)
## alcohol < 12.55 to the left, improve=0.004545412, (0 missing)
## Surrogate splits:
## density < 0.988635 to the left, agree=0.907, adj=0.03, (0 split)
##
## Node number 15: 233 observations, complexity param=0.001716374
## mean=6.763948, MSE=0.5923484
## left son=30 (81 obs) right son=31 (152 obs)
## Primary splits:
## residualsugar < 2.15 to the left, improve=0.039068820, (0 missing)
## density < 0.98987 to the right, improve=0.026550380, (0 missing)
## alcohol < 12.89667 to the right, improve=0.004638919, (0 missing)
## Surrogate splits:
## density < 0.98893 to the left, agree=0.768, adj=0.333, (0 split)
## alcohol < 13.95 to the right, agree=0.657, adj=0.012, (0 split)
##
## Node number 16: 898 observations, complexity param=0.002148696
## mean=5.335189, MSE=0.4166014
## left son=32 (20 obs) right son=33 (878 obs)
## Primary splits:
## alcohol < 8.65 to the left, improve=0.022060800, (0 missing)
## density < 0.995445 to the right, improve=0.005018234, (0 missing)
## residualsugar < 11.55 to the left, improve=0.004456148, (0 missing)
##
## Node number 17: 654 observations, complexity param=0.002099654
## mean=5.558104, MSE=0.5218533
## left son=34 (419 obs) right son=35 (235 obs)
## Primary splits:
## residualsugar < 6.75 to the left, improve=0.02363006, (0 missing)
## density < 0.99926 to the right, improve=0.01920325, (0 missing)
## alcohol < 9.775 to the left, improve=0.00509133, (0 missing)
## Surrogate splits:
## density < 0.99483 to the left, agree=0.867, adj=0.63, (0 split)
##
## Node number 18: 315 observations
## mean=5.530159, MSE=0.4459158
##
## Node number 19: 333 observations, complexity param=0.007120579
## mean=5.930931, MSE=0.7790132
## left son=38 (150 obs) right son=39 (183 obs)
## Primary splits:
## alcohol < 9.15 to the right, improve=0.11063520, (0 missing)
## residualsugar < 13.75 to the left, improve=0.09840903, (0 missing)
## density < 1.000215 to the left, improve=0.04223143, (0 missing)
## Surrogate splits:
## density < 0.997545 to the left, agree=0.664, adj=0.253, (0 split)
## residualsugar < 12.75 to the left, agree=0.601, adj=0.113, (0 split)
##
## Node number 20: 12 observations
## mean=5.083333, MSE=0.4097222
##
## Node number 21: 136 observations
## mean=5.683824, MSE=0.701503
##
## Node number 22: 116 observations, complexity param=0.001459041
## mean=5.62069, MSE=0.6492271
## left son=44 (51 obs) right son=45 (65 obs)
## Primary splits:
## density < 0.996775 to the left, improve=0.07441422, (0 missing)
## residualsugar < 9.8 to the left, improve=0.05137508, (0 missing)
## alcohol < 10.575 to the right, improve=0.03858501, (0 missing)
## Surrogate splits:
## residualsugar < 9.95 to the left, agree=0.767, adj=0.471, (0 split)
## alcohol < 10.45 to the right, agree=0.707, adj=0.333, (0 split)
##
## Node number 23: 621 observations, complexity param=0.00126789
## mean=5.900161, MSE=0.630934
## left son=46 (617 obs) right son=47 (4 obs)
## Primary splits:
## alcohol < 10.175 to the right, improve=0.012429370, (0 missing)
## density < 0.99349 to the right, improve=0.006599857, (0 missing)
## residualsugar < 1.65 to the left, improve=0.004299126, (0 missing)
##
## Node number 26: 159 observations, complexity param=0.001505435
## mean=5.937107, MSE=0.7633401
## left son=52 (4 obs) right son=53 (155 obs)
## Primary splits:
## density < 0.99265 to the right, improve=0.047641990, (0 missing)
## residualsugar < 0.975 to the left, improve=0.032710300, (0 missing)
## alcohol < 11.15 to the right, improve=0.008907326, (0 missing)
##
## Node number 27: 717 observations, complexity param=0.001789442
## mean=6.177127, MSE=0.7203694
## left son=54 (3 obs) right son=55 (714 obs)
## Primary splits:
## density < 0.9978 to the right, improve=0.013307190, (0 missing)
## residualsugar < 15.375 to the right, improve=0.010875320, (0 missing)
## alcohol < 11.31667 to the right, improve=0.003067023, (0 missing)
##
## Node number 28: 67 observations
## mean=6.074627, MSE=0.4869681
##
## Node number 29: 632 observations
## mean=6.52057, MSE=0.6767921
##
## Node number 30: 81 observations, complexity param=0.001716374
## mean=6.555556, MSE=0.7901235
## left son=60 (13 obs) right son=61 (68 obs)
## Primary splits:
## density < 0.990005 to the right, improve=0.121765400, (0 missing)
## alcohol < 13.65 to the left, improve=0.037812500, (0 missing)
## residualsugar < 1.75 to the left, improve=0.009223357, (0 missing)
##
## Node number 31: 152 observations, complexity param=0.001006451
## mean=6.875, MSE=0.4514803
## left son=62 (100 obs) right son=63 (52 obs)
## Primary splits:
## density < 0.98953 to the right, improve=0.05633179, (0 missing)
## residualsugar < 2.25 to the right, improve=0.05186142, (0 missing)
## alcohol < 13.55 to the right, improve=0.01291357, (0 missing)
## Surrogate splits:
## residualsugar < 3.8 to the right, agree=0.763, adj=0.308, (0 split)
## alcohol < 13.65 to the left, agree=0.664, adj=0.019, (0 split)
##
## Node number 32: 20 observations
## mean=4.7, MSE=0.61
##
## Node number 33: 878 observations
## mean=5.349658, MSE=0.402796
##
## Node number 34: 419 observations
## mean=5.47494, MSE=0.5262217
##
## Node number 35: 235 observations
## mean=5.706383, MSE=0.4797465
##
## Node number 38: 150 observations
## mean=5.606667, MSE=0.3452889
##
## Node number 39: 183 observations
## mean=6.196721, MSE=0.9776942
##
## Node number 44: 51 observations
## mean=5.372549, MSE=0.4298347
##
## Node number 45: 65 observations
## mean=5.815385, MSE=0.7351479
##
## Node number 46: 617 observations
## mean=5.893031, MSE=0.6271313
##
## Node number 47: 4 observations
## mean=7, MSE=0
##
## Node number 52: 4 observations
## mean=4.75, MSE=0.1875
##
## Node number 53: 155 observations
## mean=5.967742, MSE=0.7408949
##
## Node number 54: 3 observations
## mean=4.666667, MSE=1.555556
##
## Node number 55: 714 observations
## mean=6.183473, MSE=0.7072339
##
## Node number 60: 13 observations
## mean=5.846154, MSE=0.591716
##
## Node number 61: 68 observations
## mean=6.691176, MSE=0.7134516
##
## Node number 62: 100 observations
## mean=6.76, MSE=0.4224
##
## Node number 63: 52 observations
## mean=7.096154, MSE=0.4330621
rpart.plot(modelopc1, type=2, extra="auto", under=FALSE, clip.right.labs=TRUE,
fallen.leaves=TRUE, digits=2, varlen=-3, faclen=15,
cex=NULL, tweak=1.7,
compress=TRUE,box.palette="auto",
snip=FALSE)
Val_pred_tree <- predict(modelopc1,interval = "prediction", level = 0.95)
str(Val_pred_tree)
## Named num [1:4898] 5.89 6.52 5.35 5.53 5.97 ...
## - attr(*, "names")= chr [1:4898] "1" "2" "3" "4" ...
mse_tree <- mean((quality - Val_pred_tree)^2)
sqrt(mse_tree)
## [1] 0.7608975
Podemos observar no ModeloPC1;
Porcetangem de importância das variáveis escolhidas
alcohol <- 53% density <- 34% residualsugar <-13%
Número de Node criados 63 Número de observações 4898
Maiores médias, levando em conta a taxa de cada variável
mean = 6.555556 | residualsugar < 1.75 | density < 0.990005 | alcohol < 13.65
mean = 6.763948 | residualsugar < 2.15 | density < 0.98987 | alcohol < 12.89667
mean = 6.875 | alcohol < 13.55 | residualsugar < 2.25 | density < 0.98953
Percebemos que os vinhos com valor de residualsugar abaixo de 2.5 tem um potencial de qualidade maior, como também os vinhos com valor de density abaixo de 1 e alcohol abaixo de 14 também contribuem para um vinho de maior qualidade. Com tudo um pode equilibrar o outro na dosagem certa.
Modelo PC3
modelopc3 <- rpart (quality ~ volatileacidity+fixedacidity, data=vinhos_brancos,
cp = 0.001,minsplit = 2,maxdepth=5)
summary(modelopc3)
## Call:
## rpart(formula = quality ~ volatileacidity + fixedacidity, data = vinhos_brancos,
## cp = 0.001, minsplit = 2, maxdepth = 5)
## n= 4898
##
## CP nsplit rel error xerror xstd
## 1 0.028760918 0 1.0000000 1.0006940 0.02128215
## 2 0.015752113 1 0.9712391 0.9722582 0.02118989
## 3 0.008279588 2 0.9554870 0.9567535 0.02089167
## 4 0.007699172 3 0.9472074 0.9582881 0.02101434
## 5 0.004649396 4 0.9395082 0.9486296 0.02071761
## 6 0.003227697 5 0.9348588 0.9494217 0.02073660
## 7 0.002992911 6 0.9316311 0.9506309 0.02084477
## 8 0.002848784 7 0.9286382 0.9504737 0.02087448
## 9 0.002609560 8 0.9257894 0.9571688 0.02212374
## 10 0.002552448 10 0.9205703 0.9551475 0.02210214
## 11 0.001699219 11 0.9180179 0.9504997 0.02206282
## 12 0.001541853 13 0.9146194 0.9476902 0.02206753
## 13 0.001476091 14 0.9130776 0.9483001 0.02208370
## 14 0.001250836 15 0.9116015 0.9485891 0.02210559
## 15 0.001242738 17 0.9090998 0.9484351 0.02215626
## 16 0.001101492 18 0.9078571 0.9478498 0.02215663
## 17 0.001074321 19 0.9067556 0.9515722 0.02295745
## 18 0.001000000 21 0.9046069 0.9516105 0.02296706
##
## Variable importance
## volatileacidity fixedacidity
## 59 41
##
## Node number 1: 4898 observations, complexity param=0.02876092
## mean=5.877909, MSE=0.7841955
## left son=2 (3350 obs) right son=3 (1548 obs)
## Primary splits:
## volatileacidity < 0.2275 to the right, improve=0.02876092, (0 missing)
## fixedacidity < 8.25 to the right, improve=0.01354119, (0 missing)
## Surrogate splits:
## fixedacidity < 4.3 to the right, agree=0.684, adj=0.001, (0 split)
##
## Node number 2: 3350 observations, complexity param=0.01575211
## mean=5.775821, MSE=0.818699
## left son=4 (128 obs) right son=5 (3222 obs)
## Primary splits:
## volatileacidity < 0.535 to the right, improve=0.02206038, (0 missing)
## fixedacidity < 6.05 to the right, improve=0.01117759, (0 missing)
##
## Node number 3: 1548 observations, complexity param=0.007699172
## mean=6.098837, MSE=0.638164
## left son=6 (102 obs) right son=7 (1446 obs)
## Primary splits:
## fixedacidity < 8.25 to the right, improve=0.02993532, (0 missing)
## volatileacidity < 0.195 to the right, improve=0.01157136, (0 missing)
##
## Node number 4: 128 observations, complexity param=0.002848784
## mean=5.101562, MSE=0.9506226
## left son=8 (66 obs) right son=9 (62 obs)
## Primary splits:
## fixedacidity < 6.65 to the right, improve=0.08992586, (0 missing)
## volatileacidity < 0.5875 to the right, improve=0.02730248, (0 missing)
## Surrogate splits:
## volatileacidity < 0.605 to the right, agree=0.531, adj=0.032, (0 split)
##
## Node number 5: 3222 observations, complexity param=0.008279588
## mean=5.802607, MSE=0.7946797
## left son=10 (2720 obs) right son=11 (502 obs)
## Primary splits:
## fixedacidity < 6.05 to the right, improve=0.012420360, (0 missing)
## volatileacidity < 0.2525 to the right, improve=0.002042838, (0 missing)
##
## Node number 6: 102 observations, complexity param=0.001242738
## mean=5.578431, MSE=0.6360054
## left son=12 (18 obs) right son=13 (84 obs)
## Primary splits:
## fixedacidity < 9.1 to the right, improve=0.07358032, (0 missing)
## volatileacidity < 0.135 to the left, improve=0.01052138, (0 missing)
##
## Node number 7: 1446 observations, complexity param=0.003227697
## mean=6.135546, MSE=0.6178651
## left son=14 (597 obs) right son=15 (849 obs)
## Primary splits:
## volatileacidity < 0.195 to the right, improve=0.013876310, (0 missing)
## fixedacidity < 6.175 to the left, improve=0.007268217, (0 missing)
## Surrogate splits:
## fixedacidity < 7.95 to the right, agree=0.591, adj=0.01, (0 split)
##
## Node number 8: 66 observations, complexity param=0.001074321
## mean=4.818182, MSE=0.785124
## left son=16 (39 obs) right son=17 (27 obs)
## Primary splits:
## volatileacidity < 0.5875 to the right, improve=0.05773979, (0 missing)
## fixedacidity < 6.85 to the left, improve=0.05205321, (0 missing)
## Surrogate splits:
## fixedacidity < 8.3 to the left, agree=0.606, adj=0.037, (0 split)
##
## Node number 9: 62 observations, complexity param=0.001250836
## mean=5.403226, MSE=0.9503122
## left son=18 (51 obs) right son=19 (11 obs)
## Primary splits:
## volatileacidity < 0.5525 to the right, improve=0.05807987, (0 missing)
## fixedacidity < 4.55 to the right, improve=0.04398361, (0 missing)
##
## Node number 10: 2720 observations, complexity param=0.004649396
## mean=5.759926, MSE=0.7817029
## left son=20 (167 obs) right son=21 (2553 obs)
## Primary splits:
## fixedacidity < 8.25 to the right, improve=0.008399029, (0 missing)
## volatileacidity < 0.2675 to the right, improve=0.003799829, (0 missing)
##
## Node number 11: 502 observations, complexity param=0.002552448
## mean=6.033865, MSE=0.801642
## left son=22 (390 obs) right son=23 (112 obs)
## Primary splits:
## fixedacidity < 5.45 to the right, improve=0.02436217, (0 missing)
## volatileacidity < 0.525 to the left, improve=0.01928885, (0 missing)
## Surrogate splits:
## volatileacidity < 0.4975 to the left, agree=0.783, adj=0.027, (0 split)
##
## Node number 12: 18 observations
## mean=5.111111, MSE=0.9876543
##
## Node number 13: 84 observations
## mean=5.678571, MSE=0.5038265
##
## Node number 14: 597 observations, complexity param=0.001699219
## mean=6.025126, MSE=0.6174592
## left son=28 (596 obs) right son=29 (1 obs)
## Primary splits:
## fixedacidity < 4.05 to the right, improve=0.010598010, (0 missing)
## volatileacidity < 0.2175 to the left, improve=0.004089842, (0 missing)
##
## Node number 15: 849 observations, complexity param=0.00260956
## mean=6.213192, MSE=0.603548
## left son=30 (120 obs) right son=31 (729 obs)
## Primary splits:
## fixedacidity < 7.45 to the right, improve=0.014409990, (0 missing)
## volatileacidity < 0.1325 to the right, improve=0.005042366, (0 missing)
##
## Node number 16: 39 observations
## mean=4.641026, MSE=0.6403682
##
## Node number 17: 27 observations, complexity param=0.001074321
## mean=5.074074, MSE=0.8834019
## left son=34 (22 obs) right son=35 (5 obs)
## Primary splits:
## volatileacidity < 0.575 to the left, improve=0.22056750, (0 missing)
## fixedacidity < 6.75 to the left, improve=0.07763975, (0 missing)
##
## Node number 18: 51 observations
## mean=5.294118, MSE=0.9134948
##
## Node number 19: 11 observations, complexity param=0.001250836
## mean=5.909091, MSE=0.8099174
## left son=38 (9 obs) right son=39 (2 obs)
## Primary splits:
## fixedacidity < 5.4 to the right, improve=0.69444440, (0 missing)
## volatileacidity < 0.5475 to the left, improve=0.09829932, (0 missing)
##
## Node number 20: 167 observations, complexity param=0.002992911
## mean=5.443114, MSE=0.8096382
## left son=40 (69 obs) right son=41 (98 obs)
## Primary splits:
## volatileacidity < 0.305 to the right, improve=0.08502163, (0 missing)
## fixedacidity < 9.25 to the right, improve=0.04334017, (0 missing)
## Surrogate splits:
## fixedacidity < 9.75 to the right, agree=0.599, adj=0.029, (0 split)
##
## Node number 21: 2553 observations, complexity param=0.001476091
## mean=5.78065, MSE=0.7728806
## left son=42 (1972 obs) right son=43 (581 obs)
## Primary splits:
## volatileacidity < 0.2525 to the right, improve=0.002873380, (0 missing)
## fixedacidity < 7.35 to the right, improve=0.002062405, (0 missing)
##
## Node number 22: 390 observations
## mean=5.958974, MSE=0.7213938
##
## Node number 23: 112 observations, complexity param=0.001541853
## mean=6.294643, MSE=0.9935427
## left son=46 (110 obs) right son=47 (2 obs)
## Primary splits:
## volatileacidity < 0.525 to the left, improve=0.05322081, (0 missing)
## fixedacidity < 5.35 to the left, improve=0.02334421, (0 missing)
##
## Node number 28: 596 observations, complexity param=0.001699219
## mean=6.021812, MSE=0.6119403
## left son=56 (1 obs) right son=57 (595 obs)
## Primary splits:
## fixedacidity < 4.5 to the left, improve=0.025078920, (0 missing)
## volatileacidity < 0.2175 to the left, improve=0.003460793, (0 missing)
##
## Node number 29: 1 observations
## mean=8, MSE=0
##
## Node number 30: 120 observations, complexity param=0.001101492
## mean=5.983333, MSE=0.5830556
## left son=60 (106 obs) right son=61 (14 obs)
## Primary splits:
## fixedacidity < 8.05 to the left, improve=0.060469050, (0 missing)
## volatileacidity < 0.145 to the right, improve=0.009258171, (0 missing)
##
## Node number 31: 729 observations, complexity param=0.00260956
## mean=6.251029, MSE=0.5967925
## left son=62 (637 obs) right son=63 (92 obs)
## Primary splits:
## fixedacidity < 7.25 to the left, improve=0.029105590, (0 missing)
## volatileacidity < 0.1325 to the right, improve=0.005666815, (0 missing)
##
## Node number 34: 22 observations
## mean=4.863636, MSE=0.7541322
##
## Node number 35: 5 observations
## mean=6, MSE=0.4
##
## Node number 38: 9 observations
## mean=5.555556, MSE=0.2469136
##
## Node number 39: 2 observations
## mean=7.5, MSE=0.25
##
## Node number 40: 69 observations
## mean=5.130435, MSE=0.4612476
##
## Node number 41: 98 observations
## mean=5.663265, MSE=0.9376302
##
## Node number 42: 1972 observations
## mean=5.755071, MSE=0.8056284
##
## Node number 43: 581 observations
## mean=5.86747, MSE=0.6519711
##
## Node number 46: 110 observations
## mean=6.263636, MSE=0.9577686
##
## Node number 47: 2 observations
## mean=8, MSE=0
##
## Node number 56: 1 observations
## mean=3, MSE=0
##
## Node number 57: 595 observations
## mean=6.026891, MSE=0.5975962
##
## Node number 60: 106 observations
## mean=5.915094, MSE=0.5305269
##
## Node number 61: 14 observations
## mean=6.5, MSE=0.6785714
##
## Node number 62: 637 observations
## mean=6.200942, MSE=0.575007
##
## Node number 63: 92 observations
## mean=6.597826, MSE=0.6099953
rpart.plot(modelopc3, type=2, extra="auto", under=FALSE, clip.right.labs=TRUE,
fallen.leaves=TRUE, digits=2, varlen=-3, faclen=15,
cex=NULL, tweak=1.7,
compress=TRUE,box.palette="auto",
snip=FALSE)
Val_pred_tree2 <- predict(modelopc3,interval = "prediction", level = 0.95)
str(Val_pred_tree)
## Named num [1:4898] 5.89 6.52 5.35 5.53 5.97 ...
## - attr(*, "names")= chr [1:4898] "1" "2" "3" "4" ...
mse_tree <- mean((quality - Val_pred_tree2)^2)
sqrt(mse_tree)
## [1] 0.8422522
Podemos observar no ModeloPC3;
Porcetangem de importância das variáveis escolhidas
volatileacidity <- 59% fixedacidity <- 41%
Número de Node criados 63 Número de observações 4898
Maiores médias, levando em conta a taxa de cada variável
mean = 6.135546 | volatileacidity < 0.195 | fixedacidity < 6.175
mean = 6.213192 | fixedacidity < 7.45 | volatileacidity < 0.1325
mean = 6.294643 | volatileacidity < 0.525 | fixedacidity < 5.35
Percebemos que os vinhos com valor de volatileacidity abaixo de 0.1300 tem um potencial de qualidade maior, como também os vinhos com valor de fixedacidity abaixo de 7.45 também contribuem para um vinho de maior qualidade. Com tudo um pode equilibrar o outro na dosagem certa.
Com base nas duas técnicas conseguimos enxergam alguns componentes que elevaram o padrão de qualidade do vinho, com alguns diferenciais para cada uma. A técnica de regressão linear parece ser mais segura em mostrar que os componentes citricacid, volatileaciditye e fixedacidity são os causadores de uma maior qualidade do vinho. Já a técnica de árvore de regressão mostra de uma forma mais transparente e fácil de enxergar que a qualidade do vinho é mais elevada por causa dos componentes residualsugar, density e alcohol. Ou seja o modelo pc3 se mostrou mais adequado na regressão linear, e o modelo pc1 se mostrou mais adequado na árvore de regressão.
No contexto geral o modelo PC1 mostrou os melhores resultados, usando a Árvore de Regressão.
Uma técnica que pode ser adequada para classificação dos vinhos é Gaussian Naive Bayes essa técnica existe desde os anos 1950. Pertence a uma família de algoritmos chamados classificadores probabilísticos ou probabilidade condicional, onde também assume independência entre os recursos,isso nos permite prever uma classe/categoria, com base em determinado conjunto de recursos, usando probabilidade.O Naive Bayes pode ser aplicado efetivamente para alguns problemas de classificação, apesar de sua simplicidade, o classificador faz a definição de categorias surpreendentemente bem e é freqüentemente usado devido ao fato de superar métodos de classificação mais sofisticados.
Quando usadas sozinhas, as árvores de decisão são propensas a overfitting. No entanto, random forest (Várias árvores de decisão) ajudam corrigindo o possível overfitting que poderia ocorrer. A técnica Random forest utiliza uma multiplicidade de árvores de decisão diferentes com previsões diferentes, uma random forest combina os resultados dessas árvores individuais para fornecer os resultados finais.A random forest aplica um algoritmo conjunto chamado ensacamento às árvores de decisão, que ajuda a reduzir a variação e o ajuste excessivo.
O Funcionamento de uma GAN se baseia em duas redes neurais uma Geradora e outra com o Discriminadora, o papel da rede geradora é falsificar dados e da rede Discriminadora é identificar quais dados foram falsificados. Ambas estão aprendendo e melhorando. A rede gerador está constantemente aprendendo a criar falsificações melhores, e a rede Discriminadora está constantemente melhorando em detectá-los.
É uma técnica de análise de cluster que permite agrupar os dados em grupos chamados clusters. Como os rótulos não são fornecidos para cada dado de treinamento, os clusters são determinados pela similaridade dos dados um do outro, essa técnica pode ser uma boa opção para a classificação dos vinhos já que possuímos um grande número de dados